<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

/**
 * Плагин голосования от Евгения Самборского
 * Работы по разработке начаты 4 апреля 2009 года
 * sp = {Samborsky Polls}
 */

# функция автоподключения плагина
function samborsky_polls_autoload($args = array()){
	
	if( is_type('admin') ){
		// хук на админку
		mso_hook_add('admin_init','samborsky_polls_init');
	}
	// Хук в <head></head>
	mso_hook_add('head', 'samborsky_polls_head');
}

function samborsky_polls_head($args = array()){
	
	mso_load_jquery();
	
	$path = getinfo('plugins_url') . 'samborsky_polls/';
	echo '<script type="text/javascript" src="',$path,'js/kernel.js"></script>',NR;
	echo '<link rel="stylesheet" href="',$path,'css/style.css" type="text/css" media="screen">',NR;
}

# функция выполняется при активации (вкл) плагина
function samborsky_polls_activate($args = array()){
	global $MSO;
	
	mso_create_allow('samborsky_polls_edit','Админ-доступ к samborsky_polls',__FILE__);
	
	require($MSO->config['plugins_dir'] . 'samborsky_polls/install.php');
	
	sp_install();
	sp_add_options();
	
	return $args;
}

# функция выполняется при деактивации (выкл) плагина
function samborsky_polls_deactivate($args = array()){
	// ничего не трогаем при деактивации
	return $args;
}

# функция выполняется при деинстяляции плагина
function samborsky_polls_uninstall($args = array()){
	
	$CI = &get_instance();
	$CI->load->dbforge();
	
	// Удаляем таблицы
	$CI->dbforge->drop_table('sp_questions');	
	$CI->dbforge->drop_table('sp_answers');
	$CI->dbforge->drop_table('sp_logs');
			
	return $args;
}

# функция выполняется при указаном хуке admin_init
function samborsky_polls_init($args = array()){
	
	if( !mso_check_allow('samborsky_polls_edit') ){
		return $args;
	}
	
	$this_plugin_url = 'samborsky_polls'; // url и hook
	
	# добавляем свой пункт в меню админки
	# первый параметр - группа в меню
	# второй - это действие/адрес в url - http://сайт/admin/demo
	#			можно использовать добавочный, например demo/edit = http://сайт/admin/demo/edit
	# Третий - название ссылки	
	
	mso_admin_menu_add('plugins',$this_plugin_url,'Голосования');

	# прописываем для указаного admin_url_ + $this_plugin_url - (он будет в url) 
	# связанную функцию именно она будет вызываться, когда 
	# будет идти обращение по адресу http://сайт/admin/samborsky_polls_admin
	mso_admin_url_hook($this_plugin_url, 'samborsky_polls_admin_page');
	
	return $args;
}

# функция вызываемая при хуке, указанном в mso_admin_url_hook
function samborsky_polls_admin_page($args = array()){
	global $MSO;
	
	# выносим админские функции отдельно в файл	
	if( !mso_check_allow('samborsky_polls_edit') ){
		echo t('Доступ запрещен', 'plugins');
		return $args;
	}
	
	mso_hook_add_dinamic('mso_admin_header',' return $args . "' . t('samborsky_polls', __FILE__) . '"; ' );
	mso_hook_add_dinamic('admin_title',' return "' . t('samborsky_polls', __FILE__) . ' - " . $args; ' );
	
	require($MSO->config['plugins_dir'] . 'samborsky_polls/admin.php');
}

function samborsky_polls($id = 'last'){
	global $MSO;
	
	$CI = &get_instance();
	
	// Получаем активное голосование
	$CI->db->select('q_question,q_totalvoters,q_id');
	$CI->db->limit(1);
	$CI->db->order_by('q_id','random');
	$CI->db->where(array(
		'q_active' => true, 
		'q_expiry >' => gmmktime(0,0,0,date('m'),date('d'),date('Y')),
		'q_timestamp <' => gmmktime(0,0,0,date('m'),date('d'),date('Y')) 
	));
	
	$questions = $CI->db->get('sp_questions');
	
	if( $questions->num_rows() ){
		
		$q = $questions->row();
		
		$out = '<div class="sp_polls" id="sp_polls_'.$q->q_id.'">';
		$out .= "<strong>{$q->q_question}</strong>";
		
		// Куда отправлять POST
		$ajax_path = getinfo('ajax') . base64_encode('plugins/samborsky_polls/ajax.php');
		$out .= '<input type="hidden" id="sp_ajax_path_'.$q->q_id.'" value="'.$ajax_path.'" />';
	
		// Получаем варианты ответов
		$CI->db->select('a_id,a_answer');
		$CI->db->where('a_qid',$q->q_id);
		$CI->db->order_by('a_order');
		$answers = $CI->db->get('sp_answers');
		
		if( $answers->num_rows() ){
			
			$out .= TRUE == mso_get_option('sp_numeration') ? '<ol>' : '<ul>';
			
			foreach( $answers->result() as $a ){
				
				$out .= 
				"<li>
					<input type=\"radio\" id=\"sp_answer_{$a->a_id}\" class=\"sp_question_{$q->q_id}\" name=\"sp_question_{$q->q_id}\" value=\"{$a->a_id}\" />
					<label for=\"sp_answer_{$a->a_id}\">{$a->a_answer}</label>
				</li>";
			}
			
			$out .= TRUE == mso_get_option('sp_numeration') ? '</ol>' : '</ul>';
		}
		
		$out .= '<input type="button" value="Проголосовать" onclick="javascript:sp_polls_vote('.$q->q_id.');" />';
		$out .= '<a class="sp_archive_url" href="'.mso_get_option('sp_archive_url').'">Архив</a>';
		$out .= '</div>';
		
		$path = getinfo('plugins_url') . 'samborsky_polls/ajax-loader.gif';
		$out .= "<div class=\"sp_polls_loader\" id=\"sp_polls_loader_{$q->q_id}\">
			<img src=\"$path\" alt=\"Идет загрузка...\" />
			<p>Идет загрузка...</p>
		</div>";
	}
	
	return $out;
}


?>